import wx from 'weixin-js-sdk'
//import axios from 'axios'
import { cutQueryString } from './util'

import * as api from '../service/api'



var _init = async function(callback, pay_company_code){

	const result = await api.getWXConfigInfo(window.location.href, pay_company_code);

	console.log(result);

	const r = result.data;

	wx.config({
	    debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
	    appId: r.appid, // 必填，公众号的唯一标识
	    timestamp: r.timestamp, // 必填，生成签名的时间戳
	    nonceStr: r.noncestr, // 必填，生成签名的随机串
	    signature: r.signature, // 必填，签名，见附录1
	    //jsApiList: ['chooseWXPay'] // 必填，需要使用的JS接口列表，所有JS接口列表见附录2
		jsApiList: ['showMenuItems','hideAllNonBaseMenuItem','getLocalImgData','downloadImage','chooseWXPay', 
		'chooseImage', 'onMenuShareAppMessage', 'onMenuShareTimeline', 'uploadImage', 'previewImage', 'getLocation', 
		'openLocation','hideMenuItems', 'scanQRCode']
	});

	wx.ready(async function(){
		await callback();
	});
}

var wexinPay = async function(obj, callback) {


	console.log(obj);


	_init(async function (){

		const result = await api.wxCreateOrder(obj.ordercode, obj.pay_company_code);

		console.log(result);

		const r = result.data;

		wx.chooseWXPay({
	      //appId : r.appId,
	      timestamp: r.timestamp, // 支付签名时间戳，注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
	      nonceStr: r.noncestr, // 支付签名随机串，不长于 32 位
	      package: r.package, // 统一支付接口返回的prepay_id参数值，提交格式如：prepay_id=***）
	      signType: r.signtype, // 签名方式，默认为'SHA1'，使用新版支付需传入'MD5'
	      paySign: r.paysign, // 支付签名
	      success: function(res) {
	        // 支付成功后的回调函数
	        console.log(res);
	        console.log('weixinpay : ' + obj.ordercode);
	        callback(obj.ordercode);

	      },
	      fail:function(res){
	        console.log(res);


	      }
	    });

	}, obj.pay_company_code);
}


// var _init = function(company_code, callback, isPay){

// 	var para = {
// 		signurl: window.location.href,
// 		php : true,
// 	};

// 	if(isPay != undefined){
// 		para['is_pay'] = '888';
// 	}

// 	console.log(para);

// 	//1.获取用户信息
// 	axios.post('/Api/Api/jsSdkinit/wxcode/' + company_code, para)
// 	.then(function(response){

// 		//console.log(response);
// 		//可以发起支付
// 		if(response.data.status == '1'){
// 			var r = response.data.result;
// 			wx.config({
// 			    debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
// 			    appId: r.appId, // 必填，公众号的唯一标识
// 			    timestamp: r.timestamp, // 必填，生成签名的时间戳
// 			    nonceStr: r.nonceStr, // 必填，生成签名的随机串
// 			    signature: r.signature, // 必填，签名，见附录1
// 			    //jsApiList: ['chooseWXPay'] // 必填，需要使用的JS接口列表，所有JS接口列表见附录2
// 				jsApiList: ['showMenuItems','hideAllNonBaseMenuItem','getLocalImgData','downloadImage','chooseWXPay', 'chooseImage', 'onMenuShareAppMessage', 'onMenuShareTimeline', 'uploadImage', 'previewImage', 'getLocation', 'openLocation','hideMenuItems']
// 			});

// 			wx.ready(function(){
// 				callback();
// 			});
// 		}
// 	})
// 	.catch(function(err){

// 		console.log(err);

// 	});

// }

// var wexinPay = function(obj, callback) {

// 	_init(obj.company_code, function(){
// 		axios.get('/Api/Api/justPay/', {
// 		    params: {
// 		      'orderid': obj.ordercode
// 		    }
// 		}).then(function(rrr){
// 			console.log(rrr);
// 			var r = rrr.data.result;

// 			console.log({
// 				timeStamp: r.timeStamp, // 支付签名时间戳，注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
// 				nonceStr: r.nonceStr, // 支付签名随机串，不长于 32 位
// 				package: r.package, // 统一支付接口返回的prepay_id参数值，提交格式如：prepay_id=***）
// 				signType: r.signType, // 签名方式，默认为'SHA1'，使用新版支付需传入'MD5'
// 				paySign: r.paySign
// 			});
			
// 		    wx.chooseWXPay({
// 		      //appId : r.appId,
// 		      timestamp: r.timeStamp, // 支付签名时间戳，注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
// 		      nonceStr: r.nonceStr, // 支付签名随机串，不长于 32 位
// 		      package: r.package, // 统一支付接口返回的prepay_id参数值，提交格式如：prepay_id=***）
// 		      signType: r.signType, // 签名方式，默认为'SHA1'，使用新版支付需传入'MD5'
// 		      paySign: r.paySign, // 支付签名
// 		      success: function(res) {
// 		        // 支付成功后的回调函数
// 		        console.log(res);
// 		        console.log('weixinpay : ' + obj.ordercode);
// 		        callback(obj.ordercode);

// 		      },
// 		      fail:function(res){
// 		        console.log(res);


// 		      }
// 		    });
			

// 		}).catch(function(err){

// 			console.log(err);

// 		});

// 	}, 888);

// }






var weixinShare = function(obj, callback1, callback2) {
	console.log('share');
	console.log(obj);

	_init(async function(){

		wx.hideAllNonBaseMenuItem();

		wx.showMenuItems({
			menuList: ["menuItem:share:appMessage", "menuItem:share:timeline", "menuItem:copyUrl"] // 要显示的菜单项，所有menu项见附录3
		});

		callback1();

		//分享给朋友
		wx.onMenuShareAppMessage({
			title: obj.name, // 分享标题
			desc: obj.desc, // 分享描述
			link: obj.link, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
			imgUrl: obj.img, // 分享图标
			type: '', // 分享类型,music、video或link，不填默认为link
			dataUrl: '', // 如果type是music或video，则要提供数据链接，默认为空
			success: function () {
				// 用户确认分享后执行的回调函数
				console.log('分享给朋友 成功');
			    callback2()
			},
			
		});

		
		//分享到朋友圈
		wx.onMenuShareTimeline({
		    title: obj.name, // 分享标题
		    link: obj.link, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
		    imgUrl: obj.img, // 分享图标
		    success: function () {
			    // 用户确认分享后执行的回调函数
			    console.log('分享到朋友圈 成功');
			    callback2()
			},
			
		});

		

	})

}


var weixinShare2 = async function(obj, callback1, callback2) {

	const result = await api.getWXConfigInfo(window.location.href);
	const r = result.data;

	return new Promise((resolve, reject) => {

		wx.config({
		    debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
		    appId: r.appid, // 必填，公众号的唯一标识
		    timestamp: r.timestamp, // 必填，生成签名的时间戳
		    nonceStr: r.noncestr, // 必填，生成签名的随机串
		    signature: r.signature, // 必填，签名，见附录1
		    //jsApiList: ['chooseWXPay'] // 必填，需要使用的JS接口列表，所有JS接口列表见附录2
			jsApiList: ['showMenuItems','hideAllNonBaseMenuItem','getLocalImgData','downloadImage','chooseWXPay', 
			'chooseImage', 'onMenuShareAppMessage', 'onMenuShareTimeline', 'uploadImage', 'previewImage', 'getLocation', 
			'openLocation','hideMenuItems', 'scanQRCode']
		});

		wx.error(function(res){
		    // config信息验证失败会执行error函数，如签名过期导致验证失败，具体错误信息可以打开config的debug模式查看，也可以在返回的res参数中查看，对于SPA可以在这里更新签名。

		    console.log('wx.error');
		    console.log(res);
		    reject(res);
		});

		wx.ready(function(){

			console.log('ready');

			//callback1();
			
			//分享给朋友
			wx.onMenuShareAppMessage({
				title: obj.name, // 分享标题
				desc: obj.desc, // 分享描述
				link: obj.link, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
				imgUrl: obj.img, // 分享图标
				type: '', // 分享类型,music、video或link，不填默认为link
				dataUrl: '', // 如果type是music或video，则要提供数据链接，默认为空
				success: function () {
					// 用户确认分享后执行的回调函数
					console.log('分享给朋友 成功');
				    callback2()
				},
				
			});

			
			//分享到朋友圈
			wx.onMenuShareTimeline({
			    title: obj.name, // 分享标题
			    link: obj.link, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
			    imgUrl: obj.img, // 分享图标
			    success: function () {
				    // 用户确认分享后执行的回调函数
				    console.log('分享到朋友圈 成功');
				    callback2()
				},
				
			});

			resolve('ready');
		});

  	});
}


var weixinShare1 = async function(obj, callback1, callback2, url) {

	console.log('share 新版');
	console.log(obj);

	let dlqurl = '';

	var u = navigator.userAgent;
    var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端

    if (isiOS) {
        dlqurl = url;
    }else{
    	dlqurl = window.location.href;
    }

    console.log(dlqurl);

	const result = await api.getWXConfigInfo(dlqurl);

	console.log(result);

	const r = result.data;

	wx.config({
	    debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
	    appId: r.appid, // 必填，公众号的唯一标识
	    timestamp: r.timestamp, // 必填，生成签名的时间戳
	    nonceStr: r.noncestr, // 必填，生成签名的随机串
	    signature: r.signature, // 必填，签名，见附录1
	    //jsApiList: ['chooseWXPay'] // 必填，需要使用的JS接口列表，所有JS接口列表见附录2
		jsApiList: ['showMenuItems','hideAllNonBaseMenuItem','getLocalImgData','downloadImage','chooseWXPay', 
		'chooseImage', 'onMenuShareAppMessage', 'onMenuShareTimeline', 'uploadImage', 'previewImage', 'getLocation', 
		'openLocation','hideMenuItems', 'scanQRCode']
	});

	wx.error(function(res){
	    // config信息验证失败会执行error函数，如签名过期导致验证失败，具体错误信息可以打开config的debug模式查看，也可以在返回的res参数中查看，对于SPA可以在这里更新签名。

	    console.log('wx.error');
	    console.log(res);
	});

	wx.ready(function(){

		console.log('ready');

		callback1();

		
		//分享给朋友
		wx.onMenuShareAppMessage({
			title: obj.name, // 分享标题
			desc: obj.desc, // 分享描述
			link: obj.link, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
			imgUrl: obj.img, // 分享图标
			type: '', // 分享类型,music、video或link，不填默认为link
			dataUrl: '', // 如果type是music或video，则要提供数据链接，默认为空
			success: function () {
				// 用户确认分享后执行的回调函数
				console.log('分享给朋友 成功');
			    callback2()
			},
			
		});

		
		//分享到朋友圈
		wx.onMenuShareTimeline({
		    title: obj.name, // 分享标题
		    link: obj.link, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
		    imgUrl: obj.img, // 分享图标
		    success: function () {
			    // 用户确认分享后执行的回调函数
			    console.log('分享到朋友圈 成功');
			    callback2()
			},
			
		});


	});


}


/*
	朋友圈   from=timeline&isappinstalled=0
	微信群   from=groupmessage&isappinstalled=0
	好友分享 from=singlemessage&isappinstalled=0

*/
// var weixinPoster = function(company_code, obj, callback1, callback2) {

// 	console.log('weixinPoster');
// 	console.log(obj);

// 	obj['php'] = true;

// 	axios.post('/Api/Api/QrCodePoster',obj)
// 	.then(async function(response){

// 		console.log(response);

// 		_init(function(){

// 			wx.downloadImage({
// 			    serverId: response.data.result, // 需要下载的图片的服务器端ID，由uploadImage接口获得
// 			    isShowProgressTips: 1, // 默认为1，显示进度提示
// 			    success: function (res) {
// 			    	console.log(res);
// 			    	callback1(res);
// 			    }
// 			});

// 		});
// 	})
// 	.catch(function(err){

// 		console.log(err);

// 	});
// }


function wexinPreviewImage(localId) {

	_init(async function(){
		wx.previewImage({
			current: localId, // 当前显示图片的http链接
			urls: [localId] // 需要预览的图片http链接列表
		});
	});
	
}

function closeWindow () {
	_init(async function(){
		wx.closeWindow();
	});
}

var wexinQRCode = async function(cb) {

	_init(async function () {
		wx.scanQRCode({
			needResult: 1, // 默认为0，扫描结果由微信处理，1则直接返回扫描结果，
			scanType: ["qrCode","barCode"], // 可以指定扫二维码还是一维码，默认二者都有
			success: function (res) {
				var result = res.resultStr; // 当needResult 为 1 时，扫码返回的结果
				if(cb) cb(result);
			}
		});
	});
}


var wexinQRCode1 = async function(url) {

	let dlqurl = '';

	var u = navigator.userAgent;
    var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端

    if (isiOS) {
        dlqurl = url;
    }else{
    	dlqurl = window.location.href;
    }

    console.log(dlqurl);

	const result = await api.getWXConfigInfo(dlqurl);
	const r = result.data;

	console.log(r);

	return new Promise((resolve, reject) => {
		
		wx.config({
		    debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
		    appId: r.appid, // 必填，公众号的唯一标识
		    timestamp: r.timestamp, // 必填，生成签名的时间戳
		    nonceStr: r.noncestr, // 必填，生成签名的随机串
		    signature: r.signature, // 必填，签名，见附录1
		    //jsApiList: ['chooseWXPay'] // 必填，需要使用的JS接口列表，所有JS接口列表见附录2
			jsApiList: ['showMenuItems','hideAllNonBaseMenuItem','getLocalImgData','downloadImage','chooseWXPay', 
			'chooseImage', 'onMenuShareAppMessage', 'onMenuShareTimeline', 'uploadImage', 'previewImage', 'getLocation', 
			'openLocation','hideMenuItems', 'scanQRCode']
		});

		wx.error(function(res){
		    // config信息验证失败会执行error函数，如签名过期导致验证失败，具体错误信息可以打开config的debug模式查看，也可以在返回的res参数中查看，对于SPA可以在这里更新签名。

		    console.log('wx.error');
		    console.log(res);
		    reject(res);
		});

		wx.ready(function(){

			wx.scanQRCode({
				needResult: 1, // 默认为0，扫描结果由微信处理，1则直接返回扫描结果，
				scanType: ["qrCode","barCode"], // 可以指定扫二维码还是一维码，默认二者都有
				success: function (res) {
					var result = res.resultStr; // 当needResult 为 1 时，扫码返回的结果
					//if(cb) cb(result);
					resolve(result);
				}
			});

		});


  	});
}

export default {
	wexinPay,
	weixinShare,
	weixinShare1,
	weixinShare2,
	//weixinPoster,
	wexinPreviewImage,
	closeWindow,
	wexinQRCode,
	wexinQRCode1,
};


